#ifndef MYCLIENT_H
#define MYCLIENT_H
/*
 * 客户端驱动类，提供网络通信基础功能
 * 版本：V1.0
 * 更新日志：
 *      [V1.0]
 *          新增功能：
 *              1.创建模块
 *              2.连接服务器
 *              3.断开连接
 *              4.通过网络发送、接收数据
 *              5.获取状态
*/
#include <QObject>
#include <QJsonObject>
class QTcpSocket;

class MyClient : public QObject
{
    Q_OBJECT
public:
    //构造函数，套接字初始化、内部处理
    explicit MyClient(QObject *parent = nullptr);
    //析构函数
    ~MyClient();
    //连接服务器
    //@param ip 服务器IP
    //@param port 服务器端口
    void connectServer(QString ip, quint16 port);
    //断开服务器
    void disconnectServer();
    //获取当前连接状态
    //@returen bool 连接状态
    bool getState();
    //发送数据
    //@param data 要发送的数据
    void sendData(const QByteArray &data);

signals:
    //接收到数据信号
    //@param data 接收到的数据
    void receiveData(QJsonObject data);
    //连接成功信号
    void connected();
    //断开连接信号
    void disconnected();

protected slots:
    void socketReadyReadSlot();

protected:
    void handleData();

protected:
    QTcpSocket *socket;
    QString data;
};

#endif // MYCLIENT_H
